Dynamic Chart Refreshing হল একটি টেকনিক যা জাভা অ্যাপ্লিকেশন বা ওয়েব অ্যাপ্লিকেশনগুলিতে চার্টকে রিয়েল-টাইমে বা নির্দিষ্ট সময় পর পর আপডেট করার প্রক্রিয়া। JFreeChart ব্যবহার করে আপনি সহজেই এই ধরনের ডায়নামিক চার্ট তৈরি করতে পারেন। এটি ব্যবহারকারীদের জন্য সর্বশেষ ডেটা প্রদর্শন করতে সাহায্য করে, যা বিশেষভাবে গুরুত্বপূর্ণ যখন আপনি ডাটা স্ট্রিমিং বা রিয়েল-টাইম ডেটা ভিজ্যুয়ালাইজেশন করছেন।
Dynamic chart-refreshing techniques সাধারণত ব্যবহার করা হয় যখন:
JFreeChart এর মাধ্যমে Dynamic Chart Refreshing করতে কিছু সাধারণ পদ্ধতি রয়েছে। এখানে আমরা দেখব কিভাবে Swing এর সাথে JFreeChart ব্যবহার করে ডায়নামিক চার্ট তৈরি করা যায়।
Timer হল একটি ক্লাস যা নির্দিষ্ট সময় পর পর কোন কাজ করতে সহায়তা করে। এটি ব্যবহার করে আপনি নির্দিষ্ট সময় পর পর চার্ট আপডেট করতে পারেন।
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.data.category.DefaultCategoryDataset;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;
public class DynamicChartExample {
private static DefaultCategoryDataset dataset = new DefaultCategoryDataset();
public static void main(String[] args) {
// Dataset তৈরি করা
dataset.addValue(1, "Series1", "Time 1");
// Chart তৈরি করা
JFreeChart chart = ChartFactory.createLineChart(
"Dynamic Data Chart", // Title
"Time", // X-axis label
"Value", // Y-axis label
dataset, // Dataset
org.jfree.chart.plot.PlotOrientation.VERTICAL,
true, // Legend
true, // Tooltips
false // URLs
);
// ChartPanel তৈরি করা
ChartPanel chartPanel = new ChartPanel(chart);
chartPanel.setPreferredSize(new java.awt.Dimension(800, 600));
// JFrame তৈরি করা
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(chartPanel);
frame.pack();
frame.setVisible(true);
// Timer দিয়ে ডেটা আপডেট করা
Timer timer = new Timer(1000, new ActionListener() {
int timeCounter = 2;
@Override
public void actionPerformed(ActionEvent e) {
// র্যান্ডম ডেটা যোগ করা
dataset.addValue(new Random().nextInt(10) + 1, "Series1", "Time " + timeCounter);
timeCounter++;
}
});
timer.start();
}
}
Timer
ক্লাসের মাধ্যমে প্রতি 1000 মিলিসেকেন্ড (1 সেকেন্ড) পর পর ActionListener
ইভেন্ট কার্যকরী হবে, যা ডেটা আপডেট করবে।new Random().nextInt(10) + 1
) যাতে প্রতি সেকেন্ডে নতুন মান যুক্ত হয়।ChartPanel
এ ডায়নামিকভাবে আপডেট হওয়া চার্টটি যুক্ত করা হয়।dataset.addValue()
মেথড ব্যবহার করে ডেটাসেটে নতুন মান যোগ করা হয় এবং এর মাধ্যমে চার্ট রিফ্রেশ করা হয়।আরেকটি উপায় হল Threading ব্যবহার করা। একটি আলাদা থ্রেড ব্যবহার করে চার্টের ডেটা আপডেট করা যেতে পারে। এটি GUI থ্রেডকে অবরুদ্ধ না করে পার্শ্ববর্তী থ্রেডে ডেটা আপডেট করতে সহায়তা করে।
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.data.category.DefaultCategoryDataset;
import javax.swing.*;
import java.util.Random;
public class DynamicChartWithThread {
private static DefaultCategoryDataset dataset = new DefaultCategoryDataset();
public static void main(String[] args) {
// Dataset তৈরি করা
dataset.addValue(1, "Series1", "Time 1");
// Chart তৈরি করা
JFreeChart chart = ChartFactory.createLineChart(
"Live Data Chart", // Title
"Time", // X-axis label
"Value", // Y-axis label
dataset, // Dataset
org.jfree.chart.plot.PlotOrientation.VERTICAL,
true, // Legend
true, // Tooltips
false // URLs
);
// ChartPanel তৈরি করা
ChartPanel chartPanel = new ChartPanel(chart);
chartPanel.setPreferredSize(new java.awt.Dimension(800, 600));
// JFrame তৈরি করা
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(chartPanel);
frame.pack();
frame.setVisible(true);
// নতুন থ্রেডের মাধ্যমে ডেটা আপডেট করা
new Thread(new Runnable() {
int timeCounter = 2;
@Override
public void run() {
while (true) {
try {
Thread.sleep(1000); // 1 সেকেন্ড বিরতি
// র্যান্ডম ডেটা যোগ করা
dataset.addValue(new Random().nextInt(10) + 1, "Series1", "Time " + timeCounter);
timeCounter++;
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}).start();
}
}
Thread.sleep(1000)
ব্যবহার করে প্রতি সেকেন্ডে থ্রেডকে বিরতি দেওয়া হয়েছে যাতে চার্টটি 1 সেকেন্ড পর পর আপডেট হয়।JFreeChart ব্যবহার করে চার্টটি আপডেট করার জন্য আপনি repaint() মেথড ব্যবহার করে চার্টকে আবার রেন্ডার করতে পারেন। এটি GUI কম্পোনেন্টের সাধারণ নিয়ম, যেখানে আপনি চাইলে কম্পোনেন্টের রেন্ডারিং প্রক্রিয়া পুনরায় শুরু করতে পারেন।
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.data.category.DefaultCategoryDataset;
import javax.swing.*;
import java.awt.*;
import java.util.Random;
public class DynamicChartRepaintExample {
private static DefaultCategoryDataset dataset = new DefaultCategoryDataset();
public static void main(String[] args) {
// Dataset তৈরি করা
dataset.addValue(1, "Series1", "Time 1");
// Chart তৈরি করা
JFreeChart chart = ChartFactory.createLineChart(
"Live Data Chart", // Title
"Time", // X-axis label
"Value", // Y-axis label
dataset, // Dataset
org.jfree.chart.plot.PlotOrientation.VERTICAL,
true, // Legend
true, // Tooltips
false // URLs
);
// ChartPanel তৈরি করা
ChartPanel chartPanel = new ChartPanel(chart);
chartPanel.setPreferredSize(new Dimension(800, 600));
// JFrame তৈরি করা
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(chartPanel);
frame.pack();
frame.setVisible(true);
// Timer দিয়ে Chart Repainting করা
Timer timer = new Timer(1000, e -> {
// র্যান্ডম ডেটা যোগ করা
dataset.addValue(new Random().nextInt(10) + 1, "Series1", "Time " + (dataset.getRowCount() + 1));
chartPanel.repaint(); // Chart repaint করা
});
timer.start();
}
}
Dynamic Chart Refreshing হল এমন একটি প্রক্রিয়া যেখানে আপনি একটি চার্টকে নির্দিষ্ট সময় পর পর বা রিয়েল-টাইমে আপডেট করতে পারেন। JFreeChart এ এটি করার জন্য আপনি Timer, Threading,
Read more